home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TPUG - Toronto PET Users Group
/
TPUG Users Group CD
/
TPUG Users Group CD.iso
/
C64
/
T-TPUG Old Monthly Disks
/
(c)te.d64
/
bay street.c
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2007-02-04
|
8KB
|
279 lines
5 REM ********************************* * "BAY STREET" *
10 REM* FROM * * ROGER D. BURGE *
15 REM*BASED ON THE COMMODORE PET 2001* * PROGRAM "STOCK" *
20 REM* REVISED AND UPGRADED BY * * ROGER D. BURGE *
25 REM* CONVERTED TO THE COMMODORE 64 * * BY *
30 REM* ROGER D. BURGE * * #2667 *
35 REM* JULY,1984 * * FOR *
40 REM* TORONTO PET USERS GROUP INC. * * TORONTO, CANADA *
45 REM* CLASSIFICATION: * * RECREATIONAL,EDUCATIONAL *
50 REM*********************************
55 POKE53280,3:POKE53281,.
60 K=RND(-TI):X$="[158]"
65 DIMSN$(6),SA(6),PN$(6),PS(6,6),PA(6),DN(3),C$(6),C(6)
70 GOSUB150
75 FORR=1TONR
80 D1=INT(6*RND(1))+1
85 D2=INT(3*RND(1))+1
90 D3=INT(3*RND(1))+1:D3=5*2^(D3-1)
95 PRINTX$" "
100 PRINTX$SN$(D1);DN$(D2);D3
105 OND2GOSUB695,730,765
110 GOSUB1075:NEXT
115 IX=21:ML=1:PRINTX$"ONE MORE ROUND Y/N ? [157][157]";:GOSUB1150
120 IFWK$<>"N"ANDWK$<>"Y"THEN115
125 IFWK$="N"THENGOSUB790:GOTO1220
130 FORI=1TON2:GOSUB475:NEXT
135 IFN1=.THENZ=.:GOSUB910
140 PRINT"[147]";:GOSUB340
145 GOTO75
150 DATA"SILVER"," IND ","GRAIN "," OIL ","GOLD ","BONDS "
155 FORI=1TO6:SA(I)=100:READSN$(I):NEXT
160 DATA" UP "," DOWN"," DIV "
165 FORI=1TO3:READDN$(I):NEXT
170 DATA"","[150]","[158]","","[149]","[153]"
175 FORI=1TO6:READC$(I):NEXT
180 DATA1,10,7,6,9,13
185 FORI=1TO6:READC(I):NEXT
190 GOSUB1135
195 IX=20:ML=1:PRINT"[142]INSTRUCTIONS? (Y/N)";:GOSUB1150
200 IFWK$="Y"THENGOSUB1265:GOTO210
205 IFWK$<>"N"THEN190
210 IX=24:PRINT"HOW MANY PLAYERS? (1-6) [157]";:GOSUB1150
215 N2=VAL(WK$)
220 IFN2<1ORN2>6THEN210
225 IFN2=1THENN1=.:GOTO245
230 IX=29:PRINT"MAY YOUR 64 PLAY TOO? (Y/N) [157][157]";
235 GOSUB1150:IFWK$<>"N"ANDWK$<>"Y"THEN230
240 N1=.:IFWK$="N"THENN1=1
245 FORI=1TON2
250 FORJ=1TO6:PS(I,J)=.:NEXT
255 PA(I)=5000
260 PRINT"PLAYER [157][157][157][157]";I;"WHAT IS YOUR NAME? ":ML=24
265 PRINT" [145]"
270 IX=.:GOSUB1150:PN$(I)=WK$
275 IFLEN(WK$)=.ORLEFT$(WK$,1)=" "THEN260
280 NEXT
285 PN$(.)="YOUR 64":PA(.)=2000
290 FORI=1TO6:PS(.,I)=500:NEXT
295 GOSUB425
300 IFN1=.THENI=.:GOSUB545
305 IFN1THENGOSUB1135
310 PRINTLEFT$(X$,16)"[158]HOW MANY COMPLETE ROUNDS BEFORE BUYING
315 [153]"AND SELLING STOCKS (1-3)? CMDCMDCMD";:IX[178]26:ML[178]1:[141]1150
320 NR[178][197](WK$)
325 [139]NR[179]1[176]NR[177]3[167]310
330 NR[178]NR[172](1[171]N1[170]N2):[153]"LOAD";:[141]340
335 [142]
340 [153]"OPEN BAY STREET ";
345 [153]" FROM ROGER D. BURGE "
350 [129]K[178].[164]19:[153]"CMDSAVESAVE":[151]218,132:[130]:[153]"";
355 [129]I[178]190[164].[169][171]10
360 G$[178]"PRINT#":[139]I[178]100[167]G$[178]""
365 GN$[178]" "[170][196](I):GN$[178][201](GN$,3):GN$[178]""[170]GN$[170]G$[170]"TAN"
370 [129]J[178]1[164]6:WK$[178]"TANTAN"
375 [139]SA(J)[177]I[167]WK$[178]C$(J)[170]" WAIT"
380 [139]SA(J)[178]I[167]WK$[178]C$(J)[170]"NEWNEW"
385 WK$[178]WK$[170]G$[170]"TAN":[139]J[179]6[167]WK$[178]WK$[170]"TANTANTAN"
390 GN$[178]GN$[170]WK$:[130]
395 I$[178][201]([196](I),[195]([196](I))[171]1)
400 [139][195](I$)[179]3[167][129]K[178][195](I$)[164]2:I$[178]I$[170]" ":[130]
405 [153]GN$""I$;
410 [130]
415 [153]" ";SN$(1);SN$(2);SN$(3);SN$(4);SN$(5);SN$(6)
420 [142]
425 [129]I[178]1[164]N2
430 [141]545
435 [153]"ONSYSYOU MUST BUY SOME STOCK":BS[178]1
440 [141]1030
445 [141]645
450 [139]SN[178]7[167][153]"SYSINSUFFICIENT FUNDS":[129]K[178].[164]2000:[130]:[141]545:[137]440
455 [141]475
460 [139]PA(I)[178]5000[167]430
465 [130]
470 [142]
475 [141]545
480 BS[178].:IX[178]28:ML[178]1:[153]"ONBUY, SELL OR NOTHING B/S/N? CMDCMD";:[141]1150
485 [139]WK$[179][177]"N"[175]WK$[179][177]"S"[175]WK$[179][177]"B"[167][153]:[153]"ONON":[137]480
490 [139]WK$[178]"B"[167]BS[178]1
495 [139]WK$[178]"N"[167][142]
500 SB$[178]WK$:[153]:[153]"ON
505 GOSUB1030
510 IFSB$="S"THENGOSUB670
515 IFSB$="B"THENGOSUB645
520 IFSN<7THEN475
525 IFSB$="S"THENPRINT"[158]YOU DON'T OWN ENOUGH STOCK"
530 IFSB$="B"THENPRINT"[158]YOU DON'T HAVE ENOUGH MONEY"
535 FORK=1TO2000:NEXT
540 GOTO475
545 PRINT"[147][158] BAY STREET ";
550 PRINT" FROM ROGER D. BURGE [146]";
555 WK$=" PORTFOLIO - "+PN$(I):WK=INT((40-LEN(WK$))/2):FORK=1TOWK:WK$=" "+WK$
560 NEXT:WK=40-LEN(WK$):FORK=1TOWK:WK$=WK$+" ":NEXT:PRINT"[159]"WK$
565 PRINT" # DESC VALUE HOLDINGS"
570 PRINT" [163][160][160][163][163][163][163][160] [160][163][163][163][163][163][160] [160][163][163][163][163][163][163][163][163]"
575 FORK=1TO6
580 WK$=" "+STR$(SA(K)):V$=RIGHT$(WK$,3)
585 WK=PS(I,K):WK$=" "+STR$(WK)
590 :WK$=RIGHT$(WK$,7)
595 IFWK<1000THENH$=" "+WK$
600 IFWK>500THENH$=LEFT$(WK$,4)+","+RIGHT$(WK$,3)
605 WK$=" "+STR$(K)+" "
610 PRINTWK$;
615 IFLEFT$(SN$(K),1)=" "THENPRINTRIGHT$(SN$(K),LEN(SN$(K))-1)" ";:GOTO625
620 PRINTSN$(K);
625 PRINT" ";V$;" ";H$
630 NEXT
635 PRINT:PRINT"CASH ON HAND --- ";PA(I):PRINT
640 RETURN
645 WK=SA(SN)*SQ/100:PT=1
650 IFWK>PA(I)THENSN=7:RETURN
655 PA(I)=PA(I)-WK
660 PS(I,SN)=PS(I,SN)+SQ
665 RETURN
670 PT=1
675 IFSQ>PS(I,SN)THENSN=7:RETURN
680 PA(I)=PA(I)+SA(SN)*SQ/100
685 PS(I,SN)=PS(I,SN)-SQ
690 RETURN
695 SA(D1)=SA(D1)+D3
700 IFSA(D1)<200THENRETURN
705 SA(D1)=100
710 FORI=N1TON2
715 PS(I,D1)=PS(I,D1)*2
720 NEXT
725 RETURN
730 SA(D1)=SA(D1)-D3
735 IFSA(D1)>.THENRETURN
740 SA(D1)=100
745 FORI=N1TON2
750 PS(I,D1)=.
755 NEXT
760 RETURN
765 IFSA(D1)<100THENRETURN
770 FORI=N1TON2
775 :PA(I)=PA(I)+PS(I,D1)*D3/100
780 NEXT
785 RETURN
790 GOSUB1135:PRINT"PLAYER NAME CASH VALUE"
795 PRINT"[163][163][163][163][163][163][163][163][163][163][163] [163][163][163][163][163][163][163][163][163][163]"
800 FORK=N1TON2
805 FORJ=1TO6
810 ::PA(K)=PA(K)+SA(J)*PS(K,J)/100
815 NEXT
820 NEXT
825 FORK=N1TON2
830 :WK=-1
835 FORJ=N1TON2
840 IFPA(J)>WKTHENWK=PA(J):I=J
845 :NEXT
850 WK$=" "+STR$(PA(I))
855 WK$=RIGHT$(WK$,8):V$=LEFT$(WK$,2)
860 IFV$<>" "THENV$=V$+","
865 IFV$= " "THENV$=V$+" "
870 :V$=V$+MID$(WK$,3,3)
875 IFRIGHT$(V$,1)<>" "THENV$=V$+","
880 IFRIGHT$(V$,1)=" "THENV$=V$+" "
885 :V$=V$+RIGHT$(WK$,3)
890 PRINT" "PN$(I);TAB(28);V$:PRINT"[192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192]"
895 :PA(I)=-1
900 NEXT
905 RETURN
910 I=.:PT=.:GOSUB545:PRINT"[145]";
915 FORSN=1TO6:SQ=PS(.,SN)
920 IFSA(SN)<95ANDSQ>.THENPRINT"SELL";SQ;SN$(SN):Z=Z+1:GOSUB670
925 IFZ=10THENPRINT"[147]
930 [130]
935 [129]K[178]1[164]1500:[130]
940 [139]PA(.)[179]600[167][141]1005:[142]
945 WK[178]0:SQ[178]999999
950 [129]J[178]1[164]6
955 [139]SA(J)[177]105[175]PS(.,J)[179]SQ[167]WK[178]J:SQ[178]PS(.,J)
960 [130]
965 SN[178]WK
970 [139]WK[178].[167][141]1005:[142]
975 SQ[178]500:[141]645
980 [139]SN[178]7[167][141]1005:[142]
985 [139]Z[178]10[167][153]"LOAD
990 PRINT"BUY 500 ";SN$(SN):Z=Z+1
995 FORK=1TO1000:NEXT
1000 GOTO945
1005 FORK=1TO300:NEXT
1010 IFPT=1THENGOSUB545
1015 IFPT=.THENPRINT:PRINT"NO TRANSACTIONS"
1020 FORK=1TO2000:NEXT
1025 RETURN
1030 PRINT"STOCK#? [157][157]";
1035 IX=8:ML=1:GOSUB1150:SN=VAL(WK$)
1040 IFSN<1ORSN>6THENPRINT:PRINT"[145][145][145]":GOTO1030
1045 IFBSTHENGOSUB1250
1050 PRINT:PRINT"QUANTITY? ";
1055 ML=6:IX=10:GOSUB1150:SQ=VAL(WK$)
1060 WK=SQ-INT(SQ/500)*500
1065 IFWKTHENPRINT"[145] [157][157][157][157][157][157][157]";:GOTO1055
1070 RETURN
1075 S1=1024+764+(D1-1)*6:C1=S1+54272
1080 FORK=.TO190STEP10
1085 WK=64
1090 IFSA(D1)>KTHENWK=160
1095 IFSA(D1)=KTHENWK=98
1100 POKES1,WK:POKES1+1,WK:IFWK>64THENPOKEC1,C(D1):POKEC1+1,C(D1):GOTO1115
1105 IFK=100THENPOKEC1,2:POKEC1+1,2:GOTO1115
1110 POKEC1,12:POKEC1+1,12
1115 S1=S1-40:C1=C1-40
1120 NEXT
1125 FORK=1TO500:NEXT
1130 RETURN
1135 PRINT"[147][159] BAY STREET ";
1140 PRINT" FROM ROGER D. BURGE ":RETURN
1150 WK$="":POKE198,.
1155 POKE211,IX:POKE204,.
1160 POKE207,.:GETIT$:IFIT$=""THEN1160
1165 IT=ASC(IT$):IFIT=13THEN1210
1170 IFIT=20THEN1190
1175 IFIT<31ORIT>96THEN1160
1180 IFLEN(WK$)=MLTHEN1160
1185 PRINTIT$;:WK$=WK$+IT$:GOTO1160
1190 IFLEN(WK$)=.THEN1160
1195 WK$=LEFT$(WK$,LEN(WK$)-1)
1200 IFPEEK(207)=.THENPRINT"[157] [157][157]";:GOTO1160
1205 GOTO1200
1210 IFPEEK(207)=.THENPOKE204,1:PRINT" ":RETURN
1215 GOTO1210
1220 PRINTX$"WOULD YOU LIKE TO PLAY AGAIN? (Y/N) [157]";:IX=36:GOSUB1150
1225 IFWK$="Y"THENRUN
1230 IFWK$="N"THEN1240
1235 GOTO1220
1240 POKE53280,3:POKE53281,1:PRINT"[147]"
1245 END
1250 PU=INT((PA(I)*100/SA(SN))/500)*500
1255 PRINT"[158]YOU CAN BUY UP TO"PU"SHARES":PRINT"IN UNITS OF 5OO":RETURN
1260 RETURN
1265 POKE53280,.:PRINT"[145][145]":GOSUB1395:PRINT" WELCOME TO BAY STREET.
1270 [153]"HEART OF CANADA'S WORLD OF HIGH FINANCE!":[141]1395
1275 [153]" A GAME FOR 1 TO 6 PEOPLE....":[153]"AND YOUR 64 LIKES TO PLAY TOO.
1280 PRINT" HE'S THE BANKER AS WELL, BUT DON'T WORRY, HE NEVER CHEATS.
1285 [153]" NOTE: IN ONE PLAYER GAMES YOU MUST PLAYAGAINST YOUR 64. IN MULTI-";
1290 [153]" PLAYER GAMES YOU CHOOSE WHETHER OR NOT TO LET HIM PLAY.
1295 PRINT" THE OBJECT OF THE GAME IS TO PLAY THE STOCK MARKET SUCCESSFULLY.";
1300 PRINT" YOU BUY AND SELL STOCKS (IN BLOCKS OF 500 SHARES) FROM SIX ";
1305 PRINT"CATEGORIES.":PRINT" THEN WATCH THE STOCKS RISE, FALL AND PAY ";
1310 PRINT"DIVIDENDS ON THE TORONTO STOCK EXCHANGE.
1315 [153]"PRINT PRESS ANY KEY TO CONTINUE... ":[151]198,.
1320 [161]A$:[139]A$[178]""[167]1320
1325 [141]1135:[141]1395
1330 [153]" IF A STOCK'S VALUE REACHES THE TOP IT 'SPLITS' AND YOU DOUBLE";
1335 [153]" ANY SHARES YOU HAVE IN IT.
1340 PRINT" IF A STOCK'S VALUE DROPS BELOW ZERO THEN IT 'CRASHES' AND YOU ";
1345 PRINT"LOSE ANY STOCKYOU HAVE IN IT.
1350 [153]"DIVIDENDS ARE BASED ON THE MARKET VALUEOF THE STOCK AND HOW MUCH";
1355 [153]" YOU HAVE.
1360 PRINT" WHEN BUYING OR SELLING, PRICES ARE BASED STRICTLY ON MARKET";
1365 PRINT" VALUE.
1370 [153]" YOUR 64 WILL HANDLE ALL THE DETAILS.
1375 PRINT" DON' BE AFRAID TO TAKE CHANCES!
1380 [153]"PRINT PRESS ANY KEY TO PLAY. ":[151]198,.
1385 [161]A$:[139]A$[178]""[167]1385
1390 [151]53280,3:[141]1135:[142]
1395 [153]"PRINTON----------------------------------------";:[142]